<?php
/**
* Copyright 2009 Waag Society <http://www.waag.org>
* This file is part of Annotrax.
*
* Annotrax is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* Annotrax is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Annotrax.
* If not, see http://www.gnu.org/licenses/gpl.html
*/

?>
<?php
class Admin_KeywordController extends Zend_Controller_Action{
	public function init(){
		if( !At_User::getInstance()->hasIdentity() ){
			$this->_redirect('/admin/user/login');
			exit;
		}

		$this->_helper->layout->setLayout('admin');
	}

	/**
	 * default action: forwards to list
	 */
	public function indexAction(){
		$this->_forward( 'list' );
	}

	/**
	 * list all keywords
	 */
	public function listAction(){
		$request  = $this->getRequest();

		$domain  = new Default_Model_Domain();
		$keyword = new Default_Model_Keyword();

		$this->view->keywords = $keyword->fetchAll();
		$this->view->domains  = $domain->fetchAll();
	}

	/**
	 * add a new keyword
	 */
	public function addAction(){
		// basically equal to editAction!
		$request	= $this->getRequest();
		$domain 	= new Default_Model_Domain();
		$keyword 	= new Default_Model_Keyword();
		$domains    = $domain->fetchAll();

		$form = new Admin_Form_Keyword( $keyword, $domains );

		if( $request->isPost() && $form->isValid( $request->getPost() ) ){
			$values = $form->getValues();

			unset( $values['save'] );

			foreach( $values as $key => $value ){
				$keyword->$key = $value;
			}

			$keyword->save();
			$this->_redirect( '/admin/keyword/list' );
		}

		$this->view->form = $form;
	}

	/**
	 * delete a keyword
	 */
	public function deleteAction(){

	}

	/**
	 * edit a keyword
	 */
	public function editAction(){
		$request	= $this->getRequest();
		$domain 	= new Default_Model_Domain();
		$keyword 	= new Default_Model_Keyword( $request->id );
		$domains    = $domain->fetchAll();

		$form = new Admin_Form_Keyword( $keyword );

		if( $request->isPost() && $form->isValid( $request->getPost() ) ){
			$values = $form->getValues();

			unset( $values['save'] );

			foreach( $values as $key => $value ){
				$keyword->$key = $value;
			}

			$keyword->save();
			$this->_redirect( '/admin/keyword/list' );
		}

		$this->view->form = $form;
	}

	private function getKeywordForm( Default_Model_Keyword $keyword ){
		$form 	= new Zend_Form();
		$domain = new Default_Model_Domain();

		$values  = $keyword->toArray();
		$domains = $domain->fetchAll();
//		$domains = $keyword->getDomains();


		unset( $values['id'] );
		unset( $values['domainId'] ); //@TODO domainId shoudl become domain ( as in model domain )

		$options = array();
		foreach( $domains as $domain ){
			$domain = (object) $domain; //@todo refactor domain!
			$options[$domain->id] = $domain->name;
		}


		foreach( $values as $key => $value ){
			$form->addElement( 'text', $key, array(
				'value' => $value,
				'label'	=> ucfirst( $key )
			));
		}

		$form->addElement( 'select', 'domainId', array(
			'multiOptions'	=> $options,
			'value'			=> $keyword->domainId,
			'label'			=> 'Domain'
		));

		$form->addElement( 'submit', 'Save', array('value' => 'Save'));

		return $form;


	}
}
